package packVistas;

import java.awt.BorderLayout;

import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JComboBox;

import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import com.jgoodies.forms.factories.FormFactory;

import javax.swing.JLabel;

import java.awt.Font;

import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;

import packLigaDeFutbol.GestorJornadas;
import packLigaDeFutbol.GestorPartidos;
import packLigaDeFutbol.UtilControles;
import packLigaDeFutbol.comboValue;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;

public class ConsultarPartido extends JDialog {

	private static final long serialVersionUID = -3728727816224618935L;

	private boolean cargando = false;

	private int idPartido;
	private int idEquipoLocal;
	private int idEquipoVisitante;

	private JComboBox<comboValue> cboPartido;

	private JTable tblTitularesLocal;
	private JTable tblConvocadosVisitante;
	private JTable tblConvocadosLocal;
	private JTable tblTitularesVisitante;
	private JTable tblSustitucionesLocal;
	private JTable tblSustitucionesVisitante;
	private JTable tblGolesVisitante;
	private JTable tblGolesLocal;
	private JTable tblTarjetasVisitante;
	private JTable tblTarjetasLocal;
	private JPanel panelJugadores;
	private JPanel panelGoles;
	private JPanel panelSustituciones;
	private JPanel panelTarjetas;
	private JPanel panelSuperior;
	private JScrollPane scrollPaneTitularesLocal;
	private JScrollPane scrollPaneConvocadosLocal;
	private JScrollPane scrollPaneTitularesVisitante;
	private JScrollPane scrollPaneConvocadosVisitante;
	private JScrollPane scrollPaneGolesLocal;
	private JScrollPane scrollPaneGolesVisitante;
	private JScrollPane scrollPaneSustLocal;
	private JScrollPane scrollPaneSustVisitante;
	private JScrollPane scrollPaneTarjetasLocal;
	private JScrollPane scrollPanetarjetasVisitante;
	private JLabel lblLocal;
	private JLabel lblVisitante;
	private JLabel lblLocal1;
	private JLabel lblVisitante1;
	private JLabel lblLocal2;
	private JLabel lblVisitante2;
	private JLabel lblLocal3;
	private JLabel lblVisitante3;
	private JLabel lblLocal4;
	private JLabel lblVisitante4;
	private JLabel lblResultado;
	private JLabel lblArbitro;
	

	public ConsultarPartido() {

		setModal(true);
		setResizable(false);
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		setTitle("Consultar Partido");
		setBounds(100, 100, 574, 510);
		getContentPane().setLayout(new BorderLayout(0, 0));

		JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		getContentPane().add(tabbedPane, BorderLayout.CENTER);

		panelJugadores = new JPanel();
		tabbedPane.addTab("Jugadores", null, panelJugadores, null);
		panelJugadores.setLayout(new FormLayout(new ColumnSpec[] {
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("center:default"),
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("default:grow"),
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("center:default"),
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("default:grow"),
				FormFactory.RELATED_GAP_COLSPEC,},
				new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("max(85dlu;default):grow"),
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("max(85dlu;default):grow"),
				FormFactory.RELATED_GAP_ROWSPEC,}));

		lblLocal1 = new JLabel("Equipo Local");
		panelJugadores.add(lblLocal1, "2, 2");

		JLabel lblJugadoresLocal = new JLabel("Titulares:");
		panelJugadores.add(lblJugadoresLocal, "2, 4");

		JLabel lbllblLocalConvocados = new JLabel("Convocados:");
		panelJugadores.add(lbllblLocalConvocados, "6, 4");

		tblTitularesLocal = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblTitularesLocal.setRowSelectionAllowed(false);
		scrollPaneTitularesLocal = new JScrollPane(tblTitularesLocal);
		scrollPaneTitularesLocal.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		panelJugadores.add(scrollPaneTitularesLocal, "2, 6, 3, 1, fill, fill");

		tblConvocadosLocal = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblConvocadosLocal.setRowSelectionAllowed(false);
		scrollPaneConvocadosLocal = new JScrollPane(tblConvocadosLocal);
		scrollPaneConvocadosLocal.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		panelJugadores.add(scrollPaneConvocadosLocal, "6, 6, 3, 1, fill, fill");

		lblVisitante1 = new JLabel("Equipo Visitante");
		panelJugadores.add(lblVisitante1, "2, 8");

		JLabel lblJugadoresVisitante = new JLabel("Titulares:");
		panelJugadores.add(lblJugadoresVisitante, "2, 10");

		JLabel lblConvocadosEquipoVisitante = new JLabel("Convocados:");
		panelJugadores.add(lblConvocadosEquipoVisitante, "6, 10");

		tblTitularesVisitante = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblTitularesVisitante.setRowSelectionAllowed(false);

		scrollPaneTitularesVisitante = new JScrollPane(tblTitularesVisitante);
		scrollPaneTitularesVisitante.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		panelJugadores.add(scrollPaneTitularesVisitante, "2, 12, 3, 1, fill, fill");

		tblConvocadosVisitante = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblConvocadosVisitante.setRowSelectionAllowed(false);
		scrollPaneConvocadosVisitante = new JScrollPane(tblConvocadosVisitante);
		scrollPaneConvocadosVisitante.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		panelJugadores.add(scrollPaneConvocadosVisitante, "6, 12, 3, 1, fill, fill");

		panelGoles = new JPanel();
		tabbedPane.addTab("Goles", null, panelGoles, null);
		panelGoles.setLayout(new FormLayout(new ColumnSpec[] {
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("default:grow"),
				FormFactory.RELATED_GAP_COLSPEC,},
				new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("default:grow"),
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("default:grow"),
				FormFactory.RELATED_GAP_ROWSPEC,}));

		lblLocal2 = new JLabel("Equipo Local");
		panelGoles.add(lblLocal2, "2, 2");

		scrollPaneGolesLocal = new JScrollPane();
		panelGoles.add(scrollPaneGolesLocal, "2, 4, fill, fill");

		tblGolesLocal = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblGolesLocal.setRowSelectionAllowed(false);
		scrollPaneGolesLocal.setViewportView(tblGolesLocal);

		lblVisitante2 = new JLabel("Equipo Visitante");
		panelGoles.add(lblVisitante2, "2, 6");

		scrollPaneGolesVisitante = new JScrollPane();
		panelGoles.add(scrollPaneGolesVisitante, "2, 8, fill, fill");

		tblGolesVisitante = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblGolesVisitante.setRowSelectionAllowed(false);
		scrollPaneGolesVisitante.setViewportView(tblGolesVisitante);

		panelSustituciones = new JPanel();
		tabbedPane.addTab("Sustituciones", null, panelSustituciones, null);
		panelSustituciones.setLayout(new FormLayout(new ColumnSpec[] {
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("default:grow"),},
				new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("default:grow"),}));

		lblLocal3 = new JLabel("New label");
		panelSustituciones.add(lblLocal3, "2, 2");

		scrollPaneSustLocal = new JScrollPane();
		panelSustituciones.add(scrollPaneSustLocal, "2, 4, fill, fill");

		tblSustitucionesLocal = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblSustitucionesLocal.setRowSelectionAllowed(false);
		scrollPaneSustLocal.setViewportView(tblSustitucionesLocal);

		lblVisitante3 = new JLabel("New label");
		panelSustituciones.add(lblVisitante3, "2, 6");

		scrollPaneSustVisitante = new JScrollPane();
		panelSustituciones.add(scrollPaneSustVisitante, "2, 8, fill, fill");

		tblSustitucionesVisitante = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblSustitucionesVisitante.setRowSelectionAllowed(false);
		scrollPaneSustVisitante.setViewportView(tblSustitucionesVisitante);

		panelTarjetas = new JPanel();
		tabbedPane.addTab("Tarjetas", null, panelTarjetas, null);
		panelTarjetas.setLayout(new FormLayout(new ColumnSpec[] {
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("default:grow"),},
				new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("min:grow"),
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("min:grow"),}));

		lblLocal4 = new JLabel("New label");
		panelTarjetas.add(lblLocal4, "2, 2");

		scrollPaneTarjetasLocal = new JScrollPane();
		panelTarjetas.add(scrollPaneTarjetasLocal, "2, 4, fill, fill");

		tblTarjetasLocal = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblTarjetasLocal.setRowSelectionAllowed(false);
		scrollPaneTarjetasLocal.setViewportView(tblTarjetasLocal);

		lblVisitante4 = new JLabel("New label");
		panelTarjetas.add(lblVisitante4, "2, 6");

		scrollPanetarjetasVisitante = new JScrollPane();
		panelTarjetas.add(scrollPanetarjetasVisitante, "2, 8, fill, fill");

		tblTarjetasVisitante = new JTable(){
			public boolean isCellEditable(int nRow, int nCol) {
				return false;
			}
		};
		tblTarjetasVisitante.setRowSelectionAllowed(false);
		scrollPanetarjetasVisitante.setViewportView(tblTarjetasVisitante);
		panelSuperior = new JPanel();
		getContentPane().add(panelSuperior, BorderLayout.NORTH);
		panelSuperior.setLayout(new FormLayout(new ColumnSpec[] {
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("default:grow"),
				FormFactory.RELATED_GAP_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("max(165dlu;default):grow"),
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("default:grow"),},
				new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("default:grow"),
				FormFactory.RELATED_GAP_ROWSPEC,
				FormFactory.DEFAULT_ROWSPEC,
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("default:grow"),
				FormFactory.RELATED_GAP_ROWSPEC,}));

		JLabel lblPartido = new JLabel("Partido:");
		panelSuperior.add(lblPartido, "4, 2, right, default");

		cboPartido = new JComboBox<comboValue>();
		cboPartido.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (!cargando){
					JComboBox<comboValue> cb = (JComboBox<comboValue>)e.getSource();
					idPartido = ((comboValue)cb.getSelectedItem()).getValor();

					try {
						ResultSet rs = GestorPartidos.get().obtenerEquiposDePartido(idPartido);
						if (rs.first()){
							idEquipoLocal = rs.getInt("idlocal");
							idEquipoVisitante = rs.getInt("idvisitante");
						}

						cargarDatosTablas();

					} catch (SQLException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}
			}
		});
		panelSuperior.add(cboPartido, "6, 2, fill, default");

		lblArbitro = new JLabel("Arbitrado por: Nombre");
		lblArbitro.setFont(new Font("Tahoma", Font.PLAIN, 13));
		panelSuperior.add(lblArbitro, "4, 4, 3, 1, center, default");

		JPanel panel_1 = new JPanel();
		panelSuperior.add(panel_1, "4, 6, 3, 1, fill, fill");
		panel_1.setLayout(new FormLayout(new ColumnSpec[] {
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("center:default:grow"),
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("center:default:grow"),
				FormFactory.RELATED_GAP_COLSPEC,
				ColumnSpec.decode("center:default:grow"),},
				new RowSpec[] {
				FormFactory.DEFAULT_ROWSPEC,}));

		lblLocal = new JLabel("LOCAL");
		lblLocal.setFont(new Font("Tahoma", Font.BOLD, 13));
		panel_1.add(lblLocal, "2, 1");

		lblResultado = new JLabel("0 - 0");
		lblResultado.setFont(lblResultado.getFont().deriveFont(lblResultado.getFont().getStyle() | Font.BOLD));
		panel_1.add(lblResultado, "4, 1");

		lblVisitante = new JLabel("VISITANTE");
		lblVisitante.setFont(lblVisitante.getFont().deriveFont(lblVisitante.getFont().getStyle() | Font.BOLD));
		panel_1.add(lblVisitante, "6, 1");		

	}

	public void cargarDatos(int pIdJornada){
		cargando = true;
		cargarCombo(pIdJornada);
		cargando = false;
	}

	private void cargarCombo(int pIdJornada){
		if (cboPartido == null)
			cboPartido = new JComboBox<comboValue>();

			UtilControles.cargarCombo(cboPartido, GestorJornadas.get().obtenerPartidosDeJornada(pIdJornada));
	}

	private void cargarDatosTablas()  {

		ResultSet rs = GestorPartidos.get().obtenerInformacionDePartido(idPartido);

		try {
			if(rs.first()){
				
				String eqLocal = rs.getString("eqLocal");
				String eqVis = rs.getString("eqVis");
				String nomArb = rs.getString("arbitro");
				int golesLocal = rs.getInt("locales");
				int golesVis = rs.getInt("visitante");
				
				lblLocal.setText(eqLocal);
				lblVisitante.setText(eqVis);
				
				lblArbitro.setText("Arbitrado por: " + nomArb);
				lblResultado.setText(golesLocal + " - " + golesVis);
				
				//convocados
				UtilControles.cargarTabla(tblConvocadosLocal,GestorPartidos.get().obtenerConvocadosDeEquipo(idPartido,idEquipoLocal));
				UtilControles.cargarTabla(tblConvocadosVisitante,GestorPartidos.get().obtenerConvocadosDeEquipo(idPartido,idEquipoVisitante));

				//Titulares
				UtilControles.cargarTabla(tblTitularesLocal,GestorPartidos.get().obtenerTitularesDeEquipo(idPartido,idEquipoLocal));
				UtilControles.cargarTabla(tblTitularesVisitante,GestorPartidos.get().obtenerTitularesDeEquipo(idPartido,idEquipoVisitante));

				//Goles
				UtilControles.cargarTabla(tblGolesLocal,GestorPartidos.get().obtenerGolesDeEquipoEnPartido(idPartido,idEquipoLocal));
				UtilControles.cargarTabla(tblGolesVisitante,GestorPartidos.get().obtenerGolesDeEquipoEnPartido(idPartido,idEquipoVisitante));

				//Tarjetas
				UtilControles.cargarTabla(tblTarjetasLocal,GestorPartidos.get().obtenerTarjetasDeEquipoEnPartido(idPartido,idEquipoLocal));
				UtilControles.cargarTabla(tblTarjetasVisitante,GestorPartidos.get().obtenerTarjetasDeEquipoEnPartido(idPartido,idEquipoVisitante));

				//Sustituciones
				UtilControles.cargarTabla(tblSustitucionesLocal,GestorPartidos.get().obtenerCambiosDeEquipoEnPartido(idPartido,idEquipoLocal));
				UtilControles.cargarTabla(tblSustitucionesVisitante,GestorPartidos.get().obtenerCambiosDeEquipoEnPartido(idPartido,idEquipoVisitante));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


}
